home *** CD-ROM | disk | FTP | other *** search
/ Games of Daze / Infomagic - Games of Daze (Summer 1995) (Disc 1 of 2).iso / x2ftp / msdos / memory / xms100pc / xmmtest.cpp < prev    next >
C/C++ Source or Header  |  1994-09-30  |  3KB  |  93 lines

  1. //===========================================================================
  2. //
  3. //  XMMTEST.CPP -- Sample program that illustrates some XMMLIB functions
  4. //
  5. //===========================================================================
  6.  
  7. #ifndef XMMTEST_CPP
  8. #define XMMTEST_CPP
  9.  
  10. #include <iostream.h>
  11. #include "xmmlib.h"
  12.  
  13. int main()
  14. {
  15.     word handle;
  16.     word freeEMB;
  17.     char buffer[1024] = "These are the contents of buffer";
  18.     char buffer2[1024] = "";
  19.  
  20.     cout << XMMLIB_Version << endl;
  21.  
  22.     if (XMM_Installed() == FALSE) {
  23.     cout << "No Extended Memory Manager found" << endl;
  24.     return(1);
  25.     }
  26.  
  27.     if (XMM_Initialize() == 0) {
  28.     cout << "Could not initialize XMM" << endl;
  29.     return(2);
  30.     }
  31.  
  32.     cout << "Extended Memory Manager version " << XMM_GetVerString()
  33.      << " found" << endl;
  34.  
  35.     cout << XMM_QueryTotalFree() << " KB total XMS free" << endl;
  36.     freeEMB = XMM_QueryLargestFree();
  37.     cout << freeEMB << " KB free in largest EMB" << endl;
  38.  
  39.     if (freeEMB < 16) {
  40.     cout << "Sorry, not enough memory (16K) found in largest EMB." << endl;
  41.     return(3);
  42.     }
  43.  
  44.     cout << "Allocating 1K block" << endl;
  45.     handle = XMM_AllocateBlock(1);
  46.     cout << "EMB handle is " << handle << endl;
  47.  
  48.     cout << XMM_QueryTotalFree() << " KB total XMS free" << endl;
  49.     cout << XMM_QueryLargestFree() << " KB free in largest EMB" << endl;
  50.  
  51.     cout << "Contents of buffer:  \"" << buffer << "\"" << endl;
  52.     cout << "Contents of buffer2:  \"" << buffer2 << "\"" << endl;
  53.  
  54.     cout << "Copying from buffer to EMB:0" << endl;
  55.     XMM_memcpy(handle, 0L, (byte far*) buffer, 512L);
  56.     cout << "Copying from EMB:0 to EMB:512" << endl;
  57.     XMM_memcpy(handle, 512L, handle, 0L, 512L);
  58.     cout << "Copying from EMB:512 to buffer2" << endl;
  59.     XMM_memcpy((byte far*) buffer2, handle, 512L, 512L);
  60.  
  61.     cout << "Contents of buffer:  \"" << buffer << "\"" << endl;
  62.     cout << "Contents of buffer2:  \"" << buffer2 << "\"" << endl;
  63.  
  64.     cout << "Reallocating block to 2K" << endl;
  65.     XMM_ReallocateBlock(handle, 2);
  66.     cout << "Block size is now " << XMM_BlockSize(handle) << endl;
  67.  
  68.     cout << XMM_QueryTotalFree() << " KB total XMS free" << endl;
  69.     cout << XMM_QueryLargestFree() << " KB free in largest EMB" << endl;
  70.  
  71.     cout << XMM_NumHandles(handle) << " handles available for EMBs" << endl;
  72.     cout << XMM_LockCount(handle) << " locks on this particular EMB" << endl;
  73.  
  74.     cout << "Locking this EMB" << endl;
  75.     XMM_LockBlock(handle);
  76.     cout << XMM_LockCount(handle) << " locks on this particular EMB" << endl;
  77.  
  78.     cout << "Unlocking this EMB" << endl;
  79.     XMM_UnlockBlock(handle);
  80.     cout << XMM_LockCount(handle) << " locks on this particular EMB" << endl;
  81.  
  82.     cout << "Deallocating 2K block" << endl;
  83.     XMM_FreeBlock(handle);
  84.  
  85.     cout << XMM_QueryTotalFree() << " KB total XMS free" << endl;
  86.     cout << XMM_QueryLargestFree() << " KB free in largest EMB" << endl;
  87.  
  88.     return(0);
  89. }
  90.  
  91. #endif XMMTEST_CPP
  92.  
  93.